package control;


import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.Timer;

import org.jdom.JDOMException;

import excepcionesPropias.ElArchivoNoExiste;
import XML.GeneradorXML;
import XML.PuntajesMaximos;
import modelo.jugador.Jugador;
import vista.VentanaPrincipal;
import vista.VistaSalida;

public class ControlPrincipal implements ActionListener{

	Timer tm = new Timer(5,this);
	private VentanaPrincipal vPrincipal;
	private Jugador mJugador;
	private String ruta = "src/partidas/";
	private String rutaPuntaje = "src/puntajesMaximos";
	private int factorSobrante;
	
	public ControlPrincipal(Jugador elJugador, VentanaPrincipal ventanaP){
		mJugador = elJugador;
		vPrincipal = ventanaP;
		
		setFactorSobrante();
		vPrincipal.addBotonManuSalir(new SetBotonSalir());
		vPrincipal.addBotonMenuInfo(new SetBotonInfo());
		vPrincipal.addBotonMenuSave(new SetBotonSave());
		tm.start();
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		if (mJugador.getPuntaje() >= mJugador.getMaxMov()){
			vPrincipal.dispose();
			new ControlSalida(new VistaSalida(mJugador,"~GAME OVER~"));
			tm.stop();
		}
		if (mJugador.esGanador()){
			vPrincipal.dispose();
			mJugador.setPuntaje((mJugador.getMaxMov() - mJugador.getPuntaje())*factorSobrante);
			PuntajesMaximos score = new PuntajesMaximos();
			try {
				score.generarPuntajeMax(mJugador ,rutaPuntaje);
			} catch (JDOMException e) {
				e.printStackTrace();
			} catch (ElArchivoNoExiste e) {
				e.printStackTrace();
			}
			
			new ControlSalida(new VistaSalida(mJugador,"FELICITACIONES!"));
			tm.stop();
		}
	}
	
	private class SetBotonSave implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("Guardar");
    		new GeneradorXML(mJugador , ruta.concat(mJugador.getNombre().concat(".xml")));
			}
		}
	
	private class SetBotonInfo implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			JFrame info = new JFrame();
				info.setVisible(true);
				info.setTitle("Acerca de...");
				info.setLayout(new GridLayout(5,1));
				info.setBounds(500, 500, 300, 300);
				Label uno = new Label("Agustin Blanco"); uno.setBackground(Color.RED);
				Label dos = new Label("Alejandro Prieri"); dos.setBackground(Color.MAGENTA);
				Label tres = new Label("Francisco Pirra"); tres.setBackground(Color.BLUE);
				Label cuatro = new Label("Federico Sanucci"); cuatro.setBackground(Color.CYAN);
				Label cinco = new Label("Algo3Tp2(2013).FIUBA"); cinco.setBackground(Color.GREEN);
				info.add(uno);
				info.add(dos);
				info.add(tres);
				info.add(cuatro);
				info.add(cinco);
			}
		}
	
	private class SetBotonSalir implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
			}
		}
	
	private void setFactorSobrante(){
		if (mJugador.getMaxMov() >= 50)
			factorSobrante = 1;
		else if (mJugador.getMaxMov() < 50 && mJugador.getMaxMov() >= 40)
			factorSobrante = 2;
		else 
			factorSobrante = 3;
	}
}

